'''
pizza模块，实现工厂所有的pizza产品
'''
from abc import abstractmethod


class Pizza(object):
    '''pizza基类'''
    pizza_name = ''  # pizza名称
    public_material = '面粉、水'

    @abstractmethod
    def parpare(self):
        '''
        pizza所需原材料
        '''
        pass

    def bake(self):
        '''
        烘焙操作：时长、温度等
        '''
        print("===>> %s 烘焙" % self.pizza_name)

    def pack(self):
        '''
        打包：盒装、袋装等
        '''
        print("===>> %s 打包" % self.pizza_name)


class CheesePizza(Pizza):
    '''起司披萨'''
    pizza_name = __doc__

    def parpare(self):
        print('=====>> 起司、%s' % self.public_material)

    # 其他方法按需修改


class PepperPizza(Pizza):
    '''胡椒披萨'''
    pizza_name = __doc__

    def parpare(self):
        print('=====>> 胡椒、芝麻、%s' % self.public_material)


'''
=======>>> 添加自定义pizza
只需要在原有的pizza产品后面添加一个新的继承类，不用修改原有类的内部结构
'''
class CustomPizza(Pizza):
    '''自定义披萨'''
    pizza_name = __doc__

    def parpare(self):
        print('=====>> 自定义秘方、芝麻、%s' % self.public_material)
